﻿//1.打印1~100之间的奇数

//int main()
//{
//	for (int i = 1; i <= 100; i++)
//	{
//		if (i % 2 != 0)
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}

//2.打印9*9乘法口诀表

//int main()
//{
//	for (int i = 1; i <= 9; i++)//行
//	{
//		for (int j = 1; j <= i; j++)//列
//		{
//			printf("%d*%d=%2d\t", i, j, i * j);
//		}
//		printf("\n");
//	}
//}

//3、打印100~200素数（只能被1和他本身除的数为素数）

//#include<math.h>
//int main()
//{
//	for (int i = 100; i <= 200; i++)
//	{
//		int sushu = 1;
//		for (int j = 2; j < i; j++)
//		{
//			
//			if (i % j == 0)
//			{
//				sushu = 0;
//				break;
//			}
//			
//		}
//
//		if (sushu == 1)
//		{
//			printf("%d ", i);
//		}
//	}
//
//	return 0;
//}
//优化
//int main()
//{
//	for (int i = 101; i <= 200; i += 2)
//	{
//		int sushu = 1;
//		for (int j = 2; j < +sqrt(i); j++)
//		{
//			if (i % j == 0)
//			{
//				sushu = 0;
//				break;
//			}
//		}
//		if (sushu == 1)
//		{
//			printf("%d ", i);
//		}
//	}
//
//	return 0;
//}

//4.判断三角形

//#include<math.h>
//int main()
//{
//	int a, b, c;
//	printf("请输入你想判断的三条边边长：");
//	scanf_s("%d %d %d", &a, &b, &c);
//	if (abs(a - b) >= c || abs(a - c) >= b || abs(b - c) >= a || a + b <= c || a + c <= b || b + c <= a)
//	{
//		printf("这不是个三角形！");
//	}
//	else {
//		if (a == b && a == c && b ==c)
//		{
//			printf("这是一个等边三角形！");
//		}
//		else if (a == b || a == c || b == c)
//		{
//			printf("这是一个等腰三角形！");
//		}
//		else 
//		{
//			printf("这是一个普通三角形!");
//		}
//	}
//	return 0;
//}


//5、计算最大公约数

//方法1：int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf_s("%d %d", &a, &b);
//	int k = (a > b) ? b : a;
//	while (1)
//	{
//		if (a % k == 0 && b % k == 0)
//		{
//			break;
//		}
//		k--;
//	}
//	printf("%d", k);
//	return 0;
//}
//方法2：
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf_s("%d %d", &a, &b);
//	int k = 0;
//	while (k = a % b)
//	{
//		a = b;
//		b = k;
//	}
//	printf("%d", b);
//	return 0;
//}


//6、打印最小公倍数

//方法1：int main()
//{
//	int m = 0;
//	int n = 0;
//	scanf_s("%d %d", &m, &n);
//	int k = (m > n) ? m : n;
//	while (1)
//	{
//		if (k % m == 0 && k % n == 0)
//		{
//			break;
//		}
//		k++;
//	}
//	printf("%d", k);
//	return 0;
//}
// 
//方法2：
//int main()
//{
//	int m = 0;
//	int n = 0;
//	
//	scanf_s("%d %d", &m, &n);
//	int k = 0;
//	int mul = m * n;
//	while (k = m % n)
//	{
//		m = n;
//		n = k;
//	}
//	printf("%d",mul/n);
//	return 0;
//}

//7、分数求和

//int main()
//{
//	double sum1 = 0.0;
//	for (int i = 2; i <= 100; i += 2)
//	{
//		sum1 += 1.0 / i;
//	}
//	double sum2 = 0.0;
//	for (int i = 1; i <= 100; i += 2)
//	{
//		sum2 += 1.0 / i;
//	}
//	double sum3 = sum2 - sum1;
//	printf("%lf", sum3);
//	return 0;
//}
//int main()
//{
//	double sum = 0.0;
//	int i = 0;
//	for ( i = 1; i <= 100; i++)
//	{
//		if (i % 2 == 0)
//			sum -= 1.0 / i;
//		else
//			sum += 1.0 / i;
//	}
//	printf("%lf", sum);
//	return 0;
//}

//8、计算最大值和最小值的差值
//输入10个整数，找出最大值和最小值，计算差，并打印结果

//int main()
//{
//	int arr[10] = {0};
//	
//	for (int i = 0; i < 10; i++)
//	{
//		scanf_s("%d",&arr[i]);
//	}
//	int max = arr[0];
//	for (int j = 0; j < 10; j++)
//	{
//		
//		if (max<arr[j])
//		{
//			max = arr[j];
//		}
//	}
//	printf("最大的数是：%d\n", max);
//
//	int min = arr[0];
//	for (int j = 0; j < 10; j++)
//	{
//
//		if (min > arr[j])
//		{
//			min = arr[j];
//		}
//	}
//	printf("最小的数是：%d\n", min);
//
//	int num = max - min;
//	printf("max - min = %d", num);
//	return 0;
//}
////////////////////////////////////////////////////
//int main()
//{
//	int arr[10] = { 0 };
//
//	for (int i = 0; i < 10; i++)
//	{
//		scanf_s("%d", &arr[i]);
//	}
//	int max = arr[0];
//	int min = arr[0];
//	for (int j = 0; j < 10; j++)
//	{
//
//		if (max < arr[j])
//		{
//			max = arr[j];
//		}
//		if (min > arr[j])
//		{
//			min = arr[j];
//		}
//	}
//	printf("最大的数是：%d\n", max);
//	printf("最小的数是：%d\n", min);
//	int num = max - min;
//	printf("max - min = %d", num);
//	return 0;
//}

//9、输入十个整数，使用冒泡排序进行升序排序，打印数组内容

//void bubblesort(int* arr,int size)
//{
//	for (int i = 0; i < size -1; i++)
//	{
//		for (int j = 0; j < size - 1 - i; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				int temp = arr[j + 1];
//				arr[j + 1] = arr[j];
//				arr[j] = temp;
//			}
//		}
//	}
//}
//void print(int* arr,int size)
//{
//	int i = 0;
//	for ( i = 0; i < size; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//int main()
//{
//	int arr[10] = { 0 };
//	int size = sizeof(arr) / sizeof(arr[0]);
//	for (int i = 0; i < size; i++)
//	{
//		scanf_s("%d", &arr[i]);
//	}
//	printf("排序前：");
//	print(arr, size);
//	bubblesort(&arr, size);
//	printf("排序后：");
//	print(arr, size);
//	return;
//}

//10、某地发生了一个盗窃案，a说不是我，b说是c，c说是d，d说c胡说
//已知三人说了真话，一人假话，找出盗窃者

//int main()
//{
//	char burglar;
//	
//	for (burglar = 'a'; burglar <= 'd'; burglar++)
//	{
//		int count = 0;
//		if (burglar != 'a')
//			count++;
//		if (burglar == 'c')
//			count++;
//		if (burglar == 'd')
//			count++;
//		if (burglar != 'd')
//			count++;
//
//		if (count == 3)
//		{
//			printf("burglar是：%c", burglar);
//			break;
//		}
//	}
//	
//	return 0;
//}

//11、1~100000中的水仙花数（自幂数）

//#include<math.h>
//#include<stdio.h>
//int main()
//{
//	for (int i=1;i<=1000000;i++)
//	{
//		int temp = i;
//		int digit = 1;
//		while (temp / 10) //求这个数有多少位
//		{
//			digit++;
//			temp /= 10;
//		}
//
//		int sum = 0;
//		temp = i;
//		while (temp)
//		{
//			sum += (int)pow(temp%10, digit);
//			temp /= 10;
//		}
//		if (sum == i)
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}

//12、打印菱形

//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	scanf_s("%d", &n);
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j < n - i - 1; j++)
//		{
//			printf(" ");
//		}
//		for (int j = 0; j < 2 * i + 1; j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//	}
//	for (int i = 0; i < n; i++)
//	{
//		for (int j = 0; j <=i ; j++)
//		{
//			printf(" ");
//		}
//		for (int j = 0;j<2*(n-i-1)-1;j++)
//		{
//			printf("*");
//		}
//		printf("\n");
//
//	}
//
//	return 0;
//}

//13、一瓶汽水一元，两个空瓶可以换一瓶汽水，输入n代表n元钱，计算可以换得多少瓶汽水

////法一
//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	scanf_s("%d", &n);
//	int total = 0;           //喝了的数量
//	int empty = 0;           //空瓶数量
//
//	total += n;              //目前喝了n瓶
//	empty += n;              //喝完了剩下了n个空瓶;
//
//	while (empty >= 2)
//	{
//		total += empty / 2;               //可以换empty/2瓶
//		empty = empty / 2 + empty % 2;    //刚刚换的喝了加上之前余下的不足够换的等于现在的空瓶子
//	}
//	printf("%d", total);
//	return 0;
//}

//14、字符转换。大写变小写，小写变大写，其他字符不变，字符串长度<=30，包含空格符

//#include<stdio.h>
//#include<string.h>
//void swap(char* str)
//{
//	for (int i = 0; i < strlen(str); i++)
//	{
//		if (str[i] >= 'A' && str[i] <= 'Z')
//		{
//			str[i] += 32;
//		}
//		else if(str[i]>='a'&&str[i]<='z')
//		{
//			str[i] -= 32;
//		}
//	}
//	for (int i = 0; i < strlen(str); i++)
//	{
//		printf("%c", str[i]);
//	}
//	
//}
//
//int main()
//{
//	char str[31];
//	scanf_s("%30s", str, (unsigned)sizeof(str));
//	swap(str);
//	return 0;
//}


//15、交换两个整数，使用一个swap函数

//#include<stdio.h>
//void swap(int* x, int* y)
//{
//	int temp = *x;
//	*x = *y;
//	*y = temp;
//}
//
//int main()
//{
//	int m = 0;
//	int n = 0;
//	scanf_s("%d %d", &m, &n);
//	printf("m = %d n = %d\n", m, n);
//	swap(&m, &n);
//	printf("m = %d n = %d", m, n);
//	return 0;
//}

//16、求两个整数的平均值，要求使用函数，并且考虑整数过大溢出的问题

//#include<stdio.h>
//int average(int x, int y)
//{
//	return x + (y - x) / 2;
//}
//int main()
//{
//	int m = 0;
//	int n = 0;
//	scanf_s("%d %d", &m, &n);
//	int num = average(m, n);
//	printf("%d", num);
//	return 0;
//}

//17、写一个strlen函数，求字符串长度吗，包含空格，注意：字符串的结束标志是\0

//#include<stdio.h>
//#include<string.h>
//int my_strlen(char* str)
//{
//	int count = 0;
//	while (str[count] != '\0')
//	{
//		count++;
//	}
//	return count;
//}
//
//int main()
//{
//	char str[31];
//	scanf_s("%30[^\n]", str, (unsigned)sizeof(str));
//	int num = my_strlen(str);
//	printf("%d", num);
//	return 0;
//}

//18、使用递归的方法求求字符串的长度

//#include<stdio.h>
//int my_strlen(char* str)
//{
//	if (*str == '\0')
//	{
//		return 0;
//	}
//	else
//	{
//		return 1 + my_strlen(str + 1);
//	}
//}
//
//int main()
//{
//	char str[31];
//	scanf_s("%30[^\n]", str, (unsigned)sizeof(str));
//	int len = my_strlen(str);
//	printf("%d", len);
//	return 0;
//}

//19、逆序字符串，写一个函数将一个字符串的内容逆序过来

//#include<stdio.h>
//#include<string.h>
//void reverse(char* str)
//{
//	int len = strlen(str);
//	char* begin = str;
//	char* end = str + len - 1;
//	while (begin < end)
//	{
//		char temp = *begin;
//		*begin = *end;
//		*end = temp;
//
//		begin++;
//		end--;
//	}
//	
//}
//
//int main()
//{
//	char str[31];
//	scanf_s("%30[^\n]", str, (unsigned)sizeof(str));
//	reverse(str);
//	printf("%s", str);
//	return 0;
//}

//20、求数字的每一位之和
//int main()
//{
//	int n = 0;
//	int sum = 0;
//	scanf_s("%d", &n);
//	while (n != 0)
//	{
//		sum += n % 10;
//		n /= 10;
//	}
//	printf("%d", sum);
//	return 0;
//}

//21、判断回文字符串

//#include<stdio.h>
//#include<string.h>
//int dh(char* str)
//{
//	int len = strlen(str);
//	char* begin = str;
//	char* end = str + len - 1;
//	while (begin < end)
//	{
//		if (*begin != *end)
//			return 0;
//		begin++;
//		end--;
//	}
//	return 1;
//}
//
//int main()
//{
//	char str[31];
//	scanf_s("%30[^\n]", str, (unsigned)sizeof(str));
//	int over = dh(str);
//	if (over == 1)
//		printf("yes");
//	else 
//		printf("no");
//	return 0;
//}

//22、计算天数  y-year m-month 计算出y年m月有多少天，并输出天数
//闰年的2月只有29天，其他的天数不变

//int main()
//{
//	int arr[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
//	int year = 0;
//	int month = 0;
//	scanf_s("%d %d", &year, &month);
//	if (month < 1 || month>12)
//	{
//		printf("月份输入错误!");
//		return 0;
//	}
//
//	if ((year % 4 == 0 && year % 100 != 0) || (year % 400) == 0)
//	{
//		arr[2] = 29;
//	}
//	printf("%d", arr[month]);
//	return 0;
//}

//23、删除指定的数
//先输⼊10个整数存放在数组中，再输⼊⼀个整数n，删除数组中所有等于n的数字，数组中剩余的数组保证数组的最前⾯，打印剩余的数字。

//#include<stdio.h>
//
//int main()
//{
//	int arr[10] = {0};
//	int del = 0;
//	int len = sizeof(arr) / sizeof(arr[0]);
//	for (int i = 0; i < len; i++)
//	{
//		scanf_s("%d", &arr[i]);
//	}
//	scanf_s("%d", &del);
//
//	int j = 0;
//	for (int i = 0; i < len; i++)
//	{
//		if (arr[i] != del)
//		{
//			arr[j++] = arr[i];
//		}
//	}
//	for (int i = 0; i < j; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

//24、字符串拷贝

//#include<stdio.h>
//void my_strcpy(char* arr1, char* arr2)
//{
//	while (*arr2 != '\0')
//	{
//		*arr1 = *arr2;
//		arr1++;
//		arr2++;
//	}
//	*arr1 = '\0';
//}
//
//int main()
//{
//	char str1[] = { "hello dh" };
//	char str2[20] = {0};
//	my_strcpy(str2, str1);
//	printf("%s",str2);
//	return 0;
//}

//25、将两个升序排列的序列，合并成一个有序序列输出
